home *** CD-ROM | disk | FTP | other *** search
- /*
- Postman's Sort (R) Version 1.0
- Copyright (c) Robert Ramey 1991. All Rights Reserved
- */
- #include "stack.h"
- /*********************************************************************
- data structure and data for each data memory held in memory or in
- the working file
- **********************************************************************/
- /* structure for a record */
- typedef union {
- size_t field[1]; /* displacement of fields with in record */
- unsigned char data[1]; /* actual record data */
- } RECORD;
-
- /* The usage of a RECORD is as follows:
- field[0] Total length of record
- field[1] displacement of first field
- ...
- field[n] displacement of n th field
- blk num one character containing block number
- num data bytes added to permit sorting of numerics
- starts at data_offset
- byte data data contained in record
- starts at record_offset
- */
- extern size_t record_size;
- extern size_t record_offset;
- extern STACK *d_stack;
-
- #define blk_offset (record_offset-1)
- /* data[blk_offset] will contain one of three fields
- * depending on what state the record is currently in:
- */
- /* when record is stored in stack memory, it contains the number */
- /* of the stack frame */
- #define rec_frame(ra) (ra->data[blk_offset])
- /* when it is stored on disk it contains a flag indicating that is */
- /* is the last record in a chain for the current sublist */
- #define rec_eob(ra) (ra->data[blk_offset])
- /* after the record has been retrieved but before it has been attached */
- /* to a new sublist or sent to output this field contains a flag indicating */
- /* its provenance. */
- #define rec_memflag(ra) (ra->data[blk_offset])
- #define rec_size(ra) (ra->field[0])
-
- void
- rec_init(int, char **);
- RECORD *
- rec_variable();
- RECORD *
- rec_fixed();
- void
- rec_output(RECORD *);
-